package com.jt.controller;

import com.jt.pojo.User;
import com.jt.resource.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController  //@ResponseBody 将list集合转化为json
@CrossOrigin
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * URL: http://localhost:8090/findAll
     * 参数: 无
     * 返回值: List<User>
     */
    @RequestMapping("/findAll")
    public List<User> findAll(){

        return userService.findAll();
    }

    /**
     * 需求: http://localhost:8090/findUserById?id=1
     * 参数接收: id=1
     * 返回值: User对象
     */
    @RequestMapping("/findUserById")
    public User findUserById(Integer id){

        return userService.findUserById(id);
    }

    /**
     * URL地址: http://localhost:8090/findUserByAS?age=18&sex=女
     * 参数:  age=18  sex=女
     * 返回值: List<集合>
     * 参数接收: 如果是多个参数,并且参数名称与属性名称一致,可以使用对象接收
     */
    @RequestMapping("/findUserByAS")
    public List<User> findUserByAS(User user){

        return userService.findUserByAS(user);
    }

    /**
     * URL:  http://localhost:8090/updateById/1/黑熊精/3000/男
     * 参数: 4个
     * 返回值: "修改成功!!!!"
     * restFul结构 参数分析 {属性名称}
     * 参数接收:
     *      1. 单个参数使用 @PathVariable Integer id接收
     *      2. 如果多个参数接收 使用对象 mvc自动提供的功能.
     */
    @RequestMapping("/updateById/{id}/{name}/{age}/{sex}")
    public String updateById(User user){

        userService.updateById(user);
        return "用户修改成功";
    }



    @RequestMapping("/findUserByName")
    public List<User> findUserByName(String name){

        List<User> userList = userService.findUserByName(name);
        return userList;
    }

    @RequestMapping("/findUserByIds")
    public List<User> findUserByIds(Integer[] ids){
        List<User> userList = userService.findUserByIds(ids);
        return userList;
    }


    @RequestMapping("/saveUser/{name}/{age}/{sex}")
    public String saveUser(User user){
        userService.saveUser(user);
        return "新增用户成功";
    }


}